{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四步：调整树的参数：subsample 和 colsample_bytree\n",
    "(粗调，参数的步长为0.1；下一步是在粗调最佳参数周围，将步长降为0.05，进行精细调整)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# read data\n",
    "dpath = './data/'\n",
    "train = pd.read_csv(dpath + 'RentListingInquries_FE_train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "train = train.drop(['interest_level'], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'colsample_bytree': [0.6, 0.7, 0.8, 0.9],\n",
       " 'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# subsample 在[0.3-1]之间 colsample_bytree\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.58767, std: 0.00374, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.58607, std: 0.00430, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.58415, std: 0.00341, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.58294, std: 0.00408, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.58335, std: 0.00345, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.58213, std: 0.00353, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.58769, std: 0.00355, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.58485, std: 0.00417, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.58387, std: 0.00421, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.58288, std: 0.00366, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.58280, std: 0.00353, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.58187, std: 0.00443, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.58789, std: 0.00324, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.58518, std: 0.00486, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.58426, std: 0.00416, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.58385, std: 0.00302, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.58258, std: 0.00346, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.58231, std: 0.00356, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.58731, std: 0.00311, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.58531, std: 0.00387, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.58300, std: 0.00383, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.58386, std: 0.00386, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.58267, std: 0.00396, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.58135, std: 0.00363, params: {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " {'colsample_bytree': 0.9, 'subsample': 0.8},\n",
       " -0.58135226407300511)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(learning_rate=0.1, \n",
    "                       n_estimators=313, # 上一轮得出\n",
    "                       max_depth=5,                       \n",
    "                       min_child_weight=5, \n",
    "                       gamma=0, \n",
    "                       subsample=0.3, \n",
    "                       colsample_bytree=0.8, \n",
    "                       colsample_bylevel=0.7, \n",
    "                       objective= 'multi:softprob',\n",
    "                       seed=3)\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 220.09708638,  209.5492362 ,  237.3552248 ,  222.49197698,\n",
       "         211.32047677,  211.44306393,  202.1565093 ,  234.52064738,\n",
       "         265.45591421,  247.20342078,  228.48553662,  220.17335701,\n",
       "         696.5355453 ,  286.89569345,  295.02449131,  287.33655319,\n",
       "         264.94528475,  263.36194983,  268.42554178,  291.36632481,\n",
       "         317.58828154,  343.10896254,  335.65743809,  271.03352785]),\n",
       " 'mean_score_time': array([ 1.16570063,  1.06868968,  1.03675394,  1.01491504,  0.94089146,\n",
       "         1.05157061,  1.11634836,  1.00579758,  0.99932761,  0.93082824,\n",
       "         0.8768743 ,  0.87013888,  1.26551304,  1.02015371,  0.9315721 ,\n",
       "         0.91926918,  0.87063141,  0.9669476 ,  1.05597358,  1.08229041,\n",
       "         1.00795121,  1.22989411,  1.03007979,  0.79921632]),\n",
       " 'mean_test_score': array([-0.58766507, -0.58607468, -0.58414573, -0.58293993, -0.5833515 ,\n",
       "        -0.58213293, -0.58768832, -0.58484979, -0.5838653 , -0.58287694,\n",
       "        -0.5827954 , -0.58186571, -0.58789153, -0.58518364, -0.58426117,\n",
       "        -0.58384735, -0.58258425, -0.58230634, -0.58730919, -0.58531163,\n",
       "        -0.58299632, -0.58385513, -0.58266652, -0.58135226]),\n",
       " 'mean_train_score': array([-0.50284953, -0.49867775, -0.4960912 , -0.49474704, -0.49437644,\n",
       "        -0.49480307, -0.49989907, -0.49570321, -0.49348952, -0.49153179,\n",
       "        -0.4923493 , -0.49263577, -0.49836219, -0.49363151, -0.49096755,\n",
       "        -0.48966551, -0.4891856 , -0.49039611, -0.49553106, -0.49096847,\n",
       "        -0.48831733, -0.48731676, -0.48782063, -0.4881212 ]),\n",
       " 'param_colsample_bytree': masked_array(data = [0.6 0.6 0.6 0.6 0.6 0.6 0.7 0.7 0.7 0.7 0.7 0.7 0.8 0.8 0.8 0.8 0.8 0.8\n",
       "  0.9 0.9 0.9 0.9 0.9 0.9],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_subsample': masked_array(data = [0.3 0.4 0.5 0.6 0.7 0.8 0.3 0.4 0.5 0.6 0.7 0.8 0.3 0.4 0.5 0.6 0.7 0.8\n",
       "  0.3 0.4 0.5 0.6 0.7 0.8],\n",
       "              mask = [False False False False False False False False False False False False\n",
       "  False False False False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8}],\n",
       " 'rank_test_score': array([22, 20, 15,  9, 11,  3, 23, 17, 14,  8,  7,  2, 24, 18, 16, 12,  5,\n",
       "         4, 21, 19, 10, 13,  6,  1], dtype=int32),\n",
       " 'split0_test_score': array([-0.58120403, -0.57968085, -0.57890293, -0.5770334 , -0.57719705,\n",
       "        -0.57648884, -0.58167892, -0.57787351, -0.57805131, -0.57724455,\n",
       "        -0.57709645, -0.57469949, -0.58240927, -0.57690086, -0.57762786,\n",
       "        -0.57849394, -0.57663856, -0.57667259, -0.58407802, -0.57833919,\n",
       "        -0.57593991, -0.57724363, -0.57637682, -0.57548195]),\n",
       " 'split0_train_score': array([-0.50296121, -0.49993368, -0.49790542, -0.49615898, -0.49654364,\n",
       "        -0.49714279, -0.50094066, -0.49722994, -0.49469423, -0.49375476,\n",
       "        -0.49415713, -0.49444287, -0.50007852, -0.49491401, -0.49278768,\n",
       "        -0.49141945, -0.49149613, -0.49192505, -0.4972449 , -0.49208894,\n",
       "        -0.49025396, -0.48843934, -0.48969564, -0.48911233]),\n",
       " 'split1_test_score': array([-0.58615032, -0.58312208, -0.58214782, -0.57988809, -0.58198253,\n",
       "        -0.57989394, -0.58562762, -0.58271778, -0.5819478 , -0.58069274,\n",
       "        -0.58086727, -0.57977222, -0.58613569, -0.58352928, -0.58200079,\n",
       "        -0.58292531, -0.58071095, -0.58072271, -0.58461628, -0.58426247,\n",
       "        -0.58294001, -0.58276136, -0.58094152, -0.58049088]),\n",
       " 'split1_train_score': array([-0.50249568, -0.49922011, -0.49560161, -0.49410343, -0.49422524,\n",
       "        -0.49452391, -0.499775  , -0.49661193, -0.49316489, -0.4913811 ,\n",
       "        -0.49232515, -0.492072  , -0.49872142, -0.49408153, -0.49064213,\n",
       "        -0.49096633, -0.48914915, -0.49135417, -0.49678212, -0.49196979,\n",
       "        -0.4875531 , -0.48768827, -0.48813287, -0.48929805]),\n",
       " 'split2_test_score': array([-0.58853794, -0.5874417 , -0.58410873, -0.58340925, -0.5851376 ,\n",
       "        -0.58305441, -0.59036385, -0.58624163, -0.58259499, -0.58329608,\n",
       "        -0.58404369, -0.58210923, -0.58954732, -0.58548316, -0.58493884,\n",
       "        -0.584633  , -0.58471978, -0.5821165 , -0.58683091, -0.58703447,\n",
       "        -0.58348293, -0.58402434, -0.58249782, -0.58041819]),\n",
       " 'split2_train_score': array([-0.50242696, -0.49834746, -0.49502238, -0.4951763 , -0.49435381,\n",
       "        -0.49330533, -0.4993916 , -0.49456053, -0.4938018 , -0.49180934,\n",
       "        -0.49094823, -0.49114251, -0.49803471, -0.49383786, -0.49095918,\n",
       "        -0.4891955 , -0.48923445, -0.48952292, -0.49564411, -0.49085068,\n",
       "        -0.48835398, -0.48658238, -0.48672496, -0.48650928]),\n",
       " 'split3_test_score': array([-0.59113908, -0.58791965, -0.58765823, -0.58604738, -0.58600399,\n",
       "        -0.58524424, -0.58968594, -0.58768715, -0.58622952, -0.58535029,\n",
       "        -0.58450761, -0.58546787, -0.58994206, -0.58971237, -0.5871393 ,\n",
       "        -0.58610924, -0.58498801, -0.58513775, -0.5882985 , -0.58741806,\n",
       "        -0.58551862, -0.58683604, -0.58566808, -0.58472814]),\n",
       " 'split3_train_score': array([-0.50434673, -0.49897148, -0.49640422, -0.49474264, -0.49334558,\n",
       "        -0.49489771, -0.49927198, -0.49578297, -0.4927602 , -0.49010067,\n",
       "        -0.49187077, -0.49260158, -0.49800819, -0.49302916, -0.49041283,\n",
       "        -0.48828922, -0.48871788, -0.49027834, -0.49464719, -0.49083437,\n",
       "        -0.487647  , -0.4874754 , -0.48799171, -0.48819091]),\n",
       " 'split4_test_score': array([-0.59129509, -0.592211  , -0.58791206, -0.58832315, -0.58643726,\n",
       "        -0.58598438, -0.59108629, -0.58973038, -0.5905049 , -0.58780252,\n",
       "        -0.58746339, -0.58728142, -0.59142437, -0.59029407, -0.5896007 ,\n",
       "        -0.58707624, -0.58586493, -0.58688353, -0.59272387, -0.58950523,\n",
       "        -0.5871014 , -0.58841167, -0.58784993, -0.58564346]),\n",
       " 'split4_train_score': array([-0.50201706, -0.496916  , -0.49552237, -0.49355385, -0.49341394,\n",
       "        -0.49414563, -0.50011613, -0.49433067, -0.49302647, -0.49061306,\n",
       "        -0.4924452 , -0.4929199 , -0.49696814, -0.492295  , -0.49003594,\n",
       "        -0.48845704, -0.4873304 , -0.48890006, -0.49333697, -0.48909855,\n",
       "        -0.48777863, -0.48639839, -0.48655796, -0.48749541]),\n",
       " 'std_fit_time': array([  26.01775177,   18.33416297,   13.59323334,    3.11906774,\n",
       "           5.59556723,    5.04236235,    3.71183353,    2.60528585,\n",
       "           4.68529479,    8.62082696,    1.43365586,    0.84153421,\n",
       "         223.8647632 ,    2.69292844,    5.48962217,    5.59429509,\n",
       "           7.32786381,   17.20928655,    1.03948277,   13.53837899,\n",
       "           6.47659362,   15.92133159,   29.07495061,   15.29666459]),\n",
       " 'std_score_time': array([ 0.13829332,  0.10570711,  0.14535013,  0.07981526,  0.03569899,\n",
       "         0.08093559,  0.09014646,  0.07659511,  0.06177937,  0.08920125,\n",
       "         0.00989262,  0.02314819,  0.08764422,  0.05387972,  0.02450653,\n",
       "         0.04526848,  0.01729191,  0.08732264,  0.08093735,  0.11619408,\n",
       "         0.04151942,  0.33044856,  0.20849797,  0.1113698 ]),\n",
       " 'std_test_score': array([ 0.00374293,  0.00430163,  0.00340594,  0.0040756 ,  0.00344963,\n",
       "         0.00352792,  0.00355119,  0.00417181,  0.00421328,  0.00366185,\n",
       "         0.00353476,  0.00442943,  0.00324237,  0.00485914,  0.00415596,\n",
       "         0.00302218,  0.00346301,  0.00355663,  0.00310524,  0.0038654 ,\n",
       "         0.00382742,  0.0038622 ,  0.00396076,  0.00363   ]),\n",
       " 'std_train_score': array([ 0.00080633,  0.00101692,  0.00100946,  0.00089619,  0.00115838,\n",
       "         0.00128348,  0.0005997 ,  0.00112718,  0.0006929 ,  0.00125964,\n",
       "         0.00104594,  0.00108583,  0.00102477,  0.00089877,  0.00095859,\n",
       "         0.00129182,  0.00134185,  0.00111982,  0.001422  ,  0.00107578,\n",
       "         0.00100752,  0.00074915,  0.00113466,  0.00103558])}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.581352 using {'colsample_bytree': 0.9, 'subsample': 0.8}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1054270b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
